import {
    API
} from "../../../utils/fireapi";
import {
    Config
} from '../../../utils/config';
import {
    Utils
} from '../../../utils/util';

// 小程序配置信息
const app = getApp()

Page({

    data: {
        // 界面定制化的配置参数
        // pageSet:app.globalData.settings.background,
        // 图片水印
        waterPic:"",
        // 文字水印(默认为小程序名称)
        waterText:"",

        // canvas组件用于图片操作,绘制\下载等
        canvasComponent:undefined,
        // 从后端获取的数组形式背景色数据
        bgColors: [],

        // 替换背景色后的用于显示的图片(带有水印)
        urlWithWater: "",
        // 原始只有人物主体,无背景图片,用于背景合成
        imageNobgUrl:"",
        // 用于下载的无水印,base64位图片(使用base64格式,
        // 是为了在下载之前便于修改dpi)base64图片无法直接下载,必须通过转化为临时url地址
        // 修改图片dpi的函数直接返回临时url
        imgBase64:"",
        
        // 是否显示添加图片的按钮标识(界面上的"+"按钮)
        isShowAddPicBtn: true,
        // 选中使用的背景色
        selectedBg: 0,
        // 后端替换背景服务功能标识
        identity:{},
        // 是否显示等待页面
        loadModal:false,
        //下载图片前处理函数(例如:修改图片dpi等)
        beforeFun:new Function(),
        // 等待界面参数
        waitItem:{},

    },
    // 用于接收gk-bgpanel更换完背景色后的图片数据,
    urlChanged(event) {
        this.setData({
            urlWithWater: event.detail.url,     // 带水印用于显示
            imgBase64: event.detail.img,        // 无水印用于下载的base64格式图片
            selectedBg: 0//event.detail.bg         // 选择的背景色,用于下载时记录支付状态
        });
    },

    // 下载图片前,对图片进行处理,如下面修改dpi的操作
    beforeDownload(img){
        return new Promise(async (resolve,reject)=>{
            const url = await API.changeDpi(img,96);
            resolve(url);
        })
    },

    // 从相册选择则图片进行处理
    chooseImage() {
        let canvasComponent =this.data.canvasComponent;
        let _this = this;
        wx.chooseMedia({
            count: 1,
            mediaType: ['image'],
            sourceType: ['album'],
            sizeType: ['original'],
            success(res) {
                _this.loadWaitModal()
                // 调用API函数获取无背景原始图片,用于传递给gk-bgpanel更换背景色
                API.changeIdphotoBg(canvasComponent,res.tempFiles[0].tempFilePath).then(res=>{
                    _this.setData({
                        imageNobgUrl:res,
                    });

                }).catch(err=>{
                    _this.loadWaitModal(false);
                    _this.showError({title: err,icon: 'error',duration: 2000,mask: true});
                })
            }
        })
    },

    // 设置等待界面的显示或隐藏
    loadWaitModal(flag=true){
        this.setData({
            isShowAddPicBtn:!flag,
            loadModal:flag
        })
    },

    // 显示图片 加载完毕后回调函数,用于隐藏等待界面
    imageLoad:function(){
        // console.log("imagload");
        this.setData({
            loadModal:false
        })
    },

    onLoad(options) {
        // 从后端获取背景色数据
        // const bgColors = await API.getAllBgs();
        const serverData = app.globalData.serverData;
        const waitItem={
            img:serverData.config.waitPageImg,
            text:serverData.config.waitPageTxt
        };
        const bgColors = serverData.bgs;
        // 获取更换背景色功能价格
        const identity = serverData.funcPrice[Config.IDENTITY_CHANGEBG];
        this.setData({
            bgColors : bgColors,
            waitItem:waitItem,
            identity:identity,
            waterText:serverData.config.mpName,
            beforeFun:this.beforeDownload
        })
    },

    onReady() {
        // 获取自定义canvas组件
        this.data.canvasComponent = this.selectComponent("#bg-canvas");
    },

})